import * as core from "@babel/core";

import presetEnv from "@babel/preset-env";

import fs from "fs";

const file = fs.readFileSync("./test.js", "utf8");

// 代码转换
const result = core.transform(file, {
  // 需要配置参数时候，需要用两个数组
  presets: [presetEnv],
});
console.log(result.code);

/**
 * 注意区分：
 *  core.transform是将解析转换都封装的，只做输入源代码，输出转换代码，当然可以配置预设，插件去定义转换。（如 @babel/preset-env）本质是一组插件的集合，最终会被展开成 visitor 方法
 * 相当于：
 * // 1. 解析
const ast = parse(file, { sourceType: "module" });

// 2. 转换（应用 preset-env）
const envPreset = presetEnv({ targets: "> 0.25%" });
traverse.default(ast, envPreset.visitor);

// 3. 生成
const { code } = generate.default(ast);
 * 
 * */
